有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何正确执行密码while循环

我正在尝试创建一个register Jframe窗口来收集用户名和密码,现在我正在尝试创建一个条件,如果密码不等于confirm password(确认密码)字段,则让用户键入一个匹配的新密码。我不断收到Jpane错误消息的垃圾邮件,在我输入错误的密码后,它不会消失

我试过for循环、Do while循环和regular while循环。我试过一些方法

这只是创建JLabel

  JLabel Register = new JLabel("Register");

下一部分是让Jlabel与用户交互

  Register.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
  Register.addMouseListener(new MouseAdapter() {

  @Override
  public void mouseClicked(MouseEvent e) {

当点击Register时,会发生一些事情

这是我为跟踪用户输入而创建的4个变量

   String password = passwordField.getText();
   String confirmpass = passwordField_1.getText();
   String name =  userName.getText();       
   String email = createEmail.getText();

这是我开始do while循环以确认密码是否匹配的地方,我会让它重复

  do {  
      JOptionPane.showMessageDialog(null, "Passwords do not match", "Login Error", JOptionPane.ERROR_MESSAGE);
        password = "";
        confirmpass = "";

  }while(password == confirmpass);
  dispose();

  //System.out.println("Testing the Register Button lol or label " + name);

}

我希望能够有一个条件,确保密码匹配,然后退出屏幕。如果可能的话,还可以向我展示一种将用户输入从JFrame存储到数组中的方法


共 (1) 个答案

  1. # 1 楼答案

    用if语句替换do-while循环

    //inside onclick function
    if(!confirm_pass.equals(password)){
        JOptionPane.showMessageDialog(null, "Passwords do not match", "Login Error", 
        JOptionPane.ERROR_MESSAGE);
        return; //the return keyword will stop the method to go further.
    }
    
    
    dispose();
    

    如果密码不一样,do-while循环将毫无意义, 因为它们只会无休止地循环。此外,在比较字符串时,应该使用equals()方法,而不是使用==